Exception Handling PL/SQL এর একটি গুরুত্বপূর্ণ বৈশিষ্ট্য যা কোডের চলাকালীন সময়ে হওয়া ত্রুটি (errors) সঠিকভাবে পরিচালনা করতে সহায়ক। Exception হল একটি অপ্রত্যাশিত ঘটনা যা কোডের এক্সিকিউশন থামিয়ে দেয়। PL/SQL তে Exception Handling ব্যবহার করে, আপনি ত্রুটিগুলি সঠিকভাবে ধরতে, প্রক্রিয়া চালিয়ে যেতে এবং ব্যবহারকারীকে কার্যকরীভাবে ত্রুটি সম্পর্কে জানাতে পারেন।
Exception Handling এর প্রয়োজনীয়তা
কোনও প্রোগ্রাম যখন চালানো হয়, তখন অনেক ধরণের ত্রুটি ঘটতে পারে। এই ত্রুটিগুলি যদি ঠিকভাবে পরিচালিত না হয়, তবে প্রোগ্রামটি বন্ধ হয়ে যেতে পারে বা ভুল ফলাফল দিতে পারে। PL/SQL এর exception handling এর মাধ্যমে:
- কোডের স্থিরতা বজায় রাখা: ত্রুটির কারণে প্রোগ্রাম বন্ধ না হয়ে তার পরবর্তী অংশ চালিয়ে যেতে পারে।
- ত্রুটির সঠিক পরিচালনা: ত্রুটির কারণ এবং প্রক্রিয়া সম্পর্কে ব্যবহারকারীকে স্পষ্ট বার্তা প্রদানের মাধ্যমে ডিবাগিং সহজ করা।
- সিস্টেম রিসোর্সের সুরক্ষা: অনেক সময় ত্রুটির কারণে ডেটাবেস লক, রিসোর্স লিক, কিংবা অসম্পূর্ণ ট্রানজেকশন হতে পারে, যা exception handling দ্বারা প্রতিরোধ করা যায়।
PL/SQL Exception Handling ব্লক গঠন
PL/SQL তে exception handling সাধারণত তিনটি প্রধান ব্লক দিয়ে সম্পন্ন হয়:
- Declare Block: এখানে আপনি যে Exception গুলি ধরা হবে তা ডিক্লেয়ার করেন।
- Begin Block: এখানে কোডের কার্যকর অংশ থাকে, যেখানে ত্রুটি ঘটতে পারে।
- Exception Block: এখানে ত্রুটিগুলি ধরা এবং সেগুলির জন্য নির্ধারিত কার্যাবলী সম্পাদন করা হয়।
Syntax:
BEGIN
-- Normal execution code
EXCEPTION
WHEN exception_name THEN
-- Exception handling code
WHEN OTHERS THEN
-- Code to handle all other exceptions
END;
Example:
ধরা যাক, আপনি একটি ডেটাবেসে কর্মচারীর বেতন আপডেট করার চেষ্টা করছেন এবং সেই বেতন যদি শূন্য (zero) হয় তবে একটি ত্রুটি ঘটতে পারে।
DECLARE
v_salary NUMBER := 0;
BEGIN
-- Attempt to update employee salary
UPDATE employees
SET salary = v_salary
WHERE employee_id = 101;
-- If salary is zero, trigger an exception
IF v_salary = 0 THEN
RAISE_APPLICATION_ERROR(-20001, 'Salary cannot be zero.');
END IF;
EXCEPTION
WHEN NO_DATA_FOUND THEN
DBMS_OUTPUT.PUT_LINE('No records found for update.');
WHEN OTHERS THEN
DBMS_OUTPUT.PUT_LINE('An error occurred: ' || SQLERRM);
END;
এখানে, NO_DATA_FOUND এবং OTHERS নামক দুটি exception ব্যবহৃত হয়েছে:
- NO_DATA_FOUND: যদি কোনো রেকর্ড পাওয়া না যায়, তখন এটি পরিচালনা করবে।
- OTHERS: অন্য যেকোনো ত্রুটি ঘটলে এটি ধরা পড়বে এবং ত্রুটির বার্তা প্রদর্শিত হবে।
Exception Handling এর মূল উপাদানসমূহ
- Predefined Exceptions: PL/SQL তে কিছু Predefined Exceptions আছে যা ডাটাবেস এবং PL/SQL প্রসেসে সাধারণ ত্রুটির জন্য ব্যবহার করা হয়। যেমন:
- NO_DATA_FOUND: যখন SELECT ইনপুটে কোনো রেকর্ড না পাওয়া যায়।
- TOO_MANY_ROWS: যখন SELECT ইনপুটে অনেক বেশি রেকর্ড পাওয়া যায়, যা একটিকে নির্বাচন করতে পারছে না।
- ZERO_DIVIDE: যদি সংখ্যার ভাগফল শূন্যে ভাগ করা হয়।
- INVALID_NUMBER: যখন একটি অকার্যকর সংখ্যার মান প্রদান করা হয়।
User-Defined Exceptions: PL/SQL তে আপনি নিজেই exception তৈরি করতে পারেন, যা আপনার কোডের বিশেষ ত্রুটিগুলির জন্য ব্যবহৃত হবে। এর জন্য, প্রথমে exception ঘোষণা করতে হয়, এবং পরে
RAISEকমান্ড দিয়ে এটি ব্যবহার করা হয়।User-defined Exception Declaration Example:
DECLARE e_salary_exception EXCEPTION; v_salary NUMBER := -500; BEGIN IF v_salary < 0 THEN RAISE e_salary_exception; END IF; EXCEPTION WHEN e_salary_exception THEN DBMS_OUTPUT.PUT_LINE('Salary cannot be negative.'); END;Handling Multiple Exceptions: PL/SQL তে একাধিক exception একটি
EXCEPTIONব্লকে একসাথে পরিচালনা করা যেতে পারে। একাধিক exception পরস্পরকে প্রভাবিত না করে আলাদাভাবে ম্যানেজ করা যাবে।Example:
BEGIN -- Some code EXCEPTION WHEN NO_DATA_FOUND THEN DBMS_OUTPUT.PUT_LINE('No data found'); WHEN TOO_MANY_ROWS THEN DBMS_OUTPUT.PUT_LINE('Too many rows returned'); WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Other error: ' || SQLERRM); END;SQLERRM: এই বিল্ট-ইন ফাংশনটি আপনাকে ত্রুটির বার্তা প্রদান করে, যা exception ধরা হলে এর বিবরণ জানতে সাহায্য করে।
Example:
BEGIN -- Some operation that causes an error EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error Message: ' || SQLERRM); END;RAISE_APPLICATION_ERROR: যখন আপনি নিজেই exception তৈরি করতে চান, তখন
RAISE_APPLICATION_ERRORব্যবহার করতে পারেন, যা একটি নির্দিষ্ট ত্রুটি কোড এবং বার্তা প্রদর্শন করবে।Example:
BEGIN -- Some code RAISE_APPLICATION_ERROR(-20001, 'Custom error occurred'); EXCEPTION WHEN OTHERS THEN DBMS_OUTPUT.PUT_LINE('Error: ' || SQLERRM); END;
PL/SQL Exception Handling এর সুবিধা:
- Error Logging: Exception handling ব্যবহার করে, আপনি ত্রুটির বার্তা লগ করতে পারেন, যা ডিবাগিং এবং future maintenance এর জন্য উপকারী।
- Improved Code Flow: ত্রুটির কারণে প্রোগ্রাম বন্ধ না হয়ে তার পরবর্তী অংশ চালিয়ে যেতে পারে।
- User-Friendly Messages: ব্যবহারকারীকে ত্রুটি সম্পর্কে সঠিকভাবে জানানো, যেমন, invalid input বা ডাটাবেস সংক্রান্ত ত্রুটি।
- Program Control: একাধিক ত্রুটির জন্য বিশেষ কার্যাবলী নির্ধারণ করা সম্ভব হয়।
PL/SQL তে Exception Handling কোডের কার্যকারিতা এবং স্থিরতা নিশ্চিত করতে অত্যন্ত গুরুত্বপূর্ণ। এটি আপনাকে কোডের ত্রুটিগুলি ধরা এবং সঠিকভাবে পরিচালনা করার সুযোগ প্রদান করে, যার ফলে প্রোগ্রাম ত্রুটি ছাড়াই চলতে থাকে এবং ব্যবহারকারীকে সঠিক তথ্য প্রদান করা সম্ভব হয়।
Read more